--- Data courtesy of Aleena Garner, Allen Institute for Brain Sciences ---
Here we demonstrate how data from the NWB pvc-7 use-case can be stored in NIX files.
In [1]:
import nix2
import numpy as np
import matplotlib.pylab as plt
%matplotlib inline
from utils.notebook import print_stats
from utils.plotting import Plotter
In [2]:
f = nix2.File("data/pvc-7.nix2.h5", nix2.FileMode.ReadOnly)
print_stats(f.blocks)
In [3]:
block = f.blocks[0]
print_stats(block.matrix_lists)
print_stats(block.point_lists)
print_stats(block.region_lists)
In [4]:
# get recording tag
recording = block.region_lists[0]
# stimulus combinations array
stimulus = recording.feature_points[0]
In [5]:
# display the stimulus conditions
for dim in stimulus.dims:
print dim.label + ' :',
print '\n'
# actual stimulus condition values
for cmb in stimulus.all_data[:]:
for x in cmb:
print "%.2f\t" % x,
print '\n'
In [6]:
# get particular stimulus combination
index = 2
print "a stimulus combination %s" % str(stimulus.all_data[index])
In [7]:
# find out when stimulus was displayed
start = recording.all_data[index][0]
end = recording.all_data[index][1]
print "was displayed from frame %d to frame %d" % (start, end)
In [8]:
# get movie arrays from file
movies = filter(lambda x: x.type == 'movie', block.matrix_lists)
print_stats(movies)
In [9]:
# get mouse image at the beginning of the selected stimulus
mouse = movies[1][0] # note the last zero
image_index = int(np.where(mouse.dims[0].scale > start)[0][0])
plt.imshow(mouse[image_index])
Out[9]:
In [10]:
# get eye image at the end of the selected stimulus
eye = movies[0][0] # note the last zero
image_index = int(np.where(mouse.dims[0].scale > end)[0][0])
plt.imshow(eye[image_index])
Out[10]:
In [11]:
# get 2-photon image at the beginning of the selected stimulus
imaging = filter(lambda x: x.type == 'imaging', block.matrix_lists)[0][0] # note the last zero
image_index = int(np.where(imaging.dims[0].scale > start)[0][0])
plt.imshow(imaging[image_index])
Out[11]:
In [12]:
%matplotlib inline
from nix2.plot import NixPlot
# plot mouse speed in the whole window (TODO: add stimulus events)
speeds = filter(lambda x: x.type == 'runspeed', block.matrix_lists)[0][0] # note the last zero
plot = NixPlot()
plot.add(speeds)
plot.plot().show()
In [13]:
f.close()
In [13]: